/**
 * 方案A：仅使用 study_records 作为唯一事实来源
 * 索引创建脚本（本地执行脚本），去除 match_records 相关索引
 *
 * 运行方式（示例，视你的环境而定）：
 *   node scripts/setup-database-indexes.js
 *
 * 要求：已在环境中完成云开发 Admin SDK 的初始化配置；
 * 如果未集成 Admin SDK，可改为调用云函数 setupIndexes 完成索引创建。
 */

const cloud = require('wx-server-sdk');

async function main() {
  try {
    cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV });
    const db = cloud.database();

    console.log('=== 开始创建数据库索引（方案A） ===');

    // matching_pool
    console.log('-> matching_pool 索引');
    await createIndex(db, 'matching_pool', { expireAt: 1 }, { name: 'expireAt_ttl', expireAfterSeconds: 0 });
    await createIndex(db, 'matching_pool', { timeSlotKey: 1 }, { name: 'timeSlotKey_1' });
    await createIndex(db, 'matching_pool', { userId: 1 }, { name: 'userId_1' });

    // study_records
    console.log('-> study_records 索引');
    await createIndex(db, 'study_records', { matchId: 1 }, { name: 'matchId_1' });
    await createIndex(db, 'study_records', { userId: 1, status: 1 }, { name: 'userId_1_status_1' });
    await createIndex(db, 'study_records', { userId: 1, status: 1, createTime: -1 }, { name: 'userId_1_status_1_createTime_-1' });

    console.log('=== 数据库索引创建完成（方案A） ===');
  } catch (e) {
    console.error('索引创建失败：', e);
    process.exitCode = 1;
  }
}

async function createIndex(db, collection, keys, options) {
  try {
    await db.collection(collection).createIndex({ keys, options });
    console.log(`✅ ${collection} 索引创建成功：${options && options.name ? options.name : JSON.stringify(keys)}`);
  } catch (err) {
    console.log(`⚠️ ${collection} 索引可能已存在：${(err && err.message) || err}`);
  }
}

main();